<?php
// otpremnica.php

// Uključivanje konfiguracijskog fajla
include('config.php');

// POST dio – obrada slanja forme
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Preuzimanje podataka iz forme
    $doc_date = $_POST['doc_date'];
    $na_lokaciju = $_POST['na_lokaciju'];
    // Preuzimanje vrijednosti iz padajuće liste "napomena"
    $napomena = $_POST['napomena'];
    
    // Dohvat klijenta (client_id) iz padajuće liste
    $client_id = intval($_POST['client_id']);
    // Preuzimanje vrijednosti rekapitulacije ukupno
    $ukupno = $_POST['ukupno'];
    
    // Kombinacija polja "Na lokaciju" i odabrane napomene (separator možete prilagoditi)
    $final_napomena = $na_lokaciju . " - " . $napomena;
    
    // Generiranje novog broja otpremnice (document_type_id = 4)
    $query = "SELECT doc_number FROM document_header WHERE document_type_id = 4 ORDER BY id DESC LIMIT 1";
    $result = $conn->query($query);
    if ($result && $result->num_rows > 0) {
        $row = $result->fetch_assoc();
        $last_number = intval($row['doc_number']);
        $new_doc_number = $last_number + 1;
    } else {
        $new_doc_number = 1;
    }
    
    // Unos u document_header – uključujemo client_id i note (napomenu)
    $stmt = $conn->prepare("INSERT INTO document_header (document_type_id, doc_number, doc_date, client_id, note, total_net, total_discount, total_tax, total_gross, created_at, updated_at) VALUES (4, ?, ?, ?, ?, ?, 0, 0, 0, NOW(), NOW())");
    if (!$stmt) {
        die("Priprema upita nije uspjela: " . $conn->error);
    }
    // Parametri: doc_number (string), doc_date (string), client_id (int), note (string), ukupno (double)
    $stmt->bind_param("ssisd", $new_doc_number, $doc_date, $client_id, $final_napomena, $ukupno);
    if (!$stmt->execute()) {
        die("Izvršenje upita nije uspjelo: " . $stmt->error);
    }
    $header_id = $stmt->insert_id;
    $stmt->close();
    
    // Preuzimanje stavki (proslijeđeno kao JSON string)
    $stavke_json = $_POST['stavke'];
    $stavke = json_decode($stavke_json, true);
    if (!is_array($stavke)) {
        die("Greška: Nije moguće dekodirati stavke.");
    }
    
    // Unos svake stavke
    foreach ($stavke as $stavka) {
        // Stavka sadrži: sifra, naziv, jm, kolicina
        $sifra_artikla = $stavka['sifra'];
        $item_name = $stavka['naziv'];
        $jm = $stavka['jm'];
        $kolicina = $stavka['kolicina'];
        
        // Unos u document_item
        $stmt = $conn->prepare("INSERT INTO document_item (document_id, item_id, item_name, item_measure, quantity, unit_net_price, discount_percent, discount_value, pdv_percent, pdv_value, net_total, gross_total) VALUES (?, ?, ?, ?, ?, 0, 0, 0, 17, 0, 0, 0)");
        if (!$stmt) {
            die("Priprema upita za stavku nije uspjela: " . $conn->error);
        }
        $stmt->bind_param("iissd", $header_id, $sifra_artikla, $item_name, $jm, $kolicina);
        if (!$stmt->execute()) {
            die("Izvršenje upita za stavku nije uspjelo: " . $stmt->error);
        }
        $stmt->close();
        
        // Unos u lager_promet (tip 'IZLAZ')
        $stmt = $conn->prepare("INSERT INTO lager_promet (id_artikl, datum, tip, kolicina, dokument_vrsta, dokument_id) VALUES (?, NOW(), 'IZLAZ', ?, 'OTPREMNICA', ?)");
        if (!$stmt) {
            die("Priprema upita za lager_promet nije uspjela: " . $conn->error);
        }
        $stmt->bind_param("idi", $sifra_artikla, $kolicina, $header_id);
        if (!$stmt->execute()) {
            die("Izvršenje upita za lager_promet nije uspjelo: " . $stmt->error);
        }
        $stmt->close();
    }
    
    // Nakon uspješnog snimanja, preusmjeri na GET dio s porukom i brojem otpremnice
    header("Location: otpremnica.php?success=1&doc_number=" . $new_doc_number);
    exit;
}

// --- GET dio: Prikaz forme ---

// Ako postoji poruka o uspješnom snimanju, spremi je za ispis
$successMessage = "";
if (isset($_GET['success']) && $_GET['success'] == 1 && isset($_GET['doc_number'])) {
    $successMessage = "Otpremnica uspješno spremljena. Broj otpremnice: " . htmlspecialchars($_GET['doc_number']);
}

// Dohvat novog broja otpremnice (document_type_id = 4) za prikaz u formi
$query = "SELECT doc_number FROM document_header WHERE document_type_id = 4 ORDER BY id DESC LIMIT 1";
$result = $conn->query($query);
if ($result && $result->num_rows > 0) {
    $row = $result->fetch_assoc();
    $new_doc_number = intval($row['doc_number']) + 1;
} else {
    $new_doc_number = 1;
}

// Dohvat grupa iz tabele grupa_artikala
$groups = array();
$result = $conn->query("SELECT id_grupe, naziv_grupe FROM grupa_artikala");
if ($result) {
    while ($row = $result->fetch_assoc()) {
        $groups[] = $row;
    }
}

// Dohvat artikala iz tabele artikli
$artikli = array();
$result = $conn->query("SELECT sifra_artikla, naziv_artikla, jed_mjere, id_grupe FROM artikli");
if ($result) {
    while ($row = $result->fetch_assoc()) {
        $artikli[] = $row;
    }
}

// Dohvat klijenata iz tabele klijenti
$clients = array();
$result = $conn->query("SELECT sifra, naziv_klijenta FROM klijenti");
if ($result) {
    while ($row = $result->fetch_assoc()) {
        $clients[] = $row;
    }
}

// Dohvat napomena iz tabele napomena
$napomene = array();
$result = $conn->query("SELECT id_napomena, tekst_napomena FROM napomena");
if ($result) {
    while ($row = $result->fetch_assoc()) {
        $napomene[] = $row;
    }
}
?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Unos Otpremnice</title>
  <style>
    body { font-family: Arial, sans-serif; }
    table, th, td { border: 1px solid #000; border-collapse: collapse; }
    th, td { padding: 5px; }
    .form-section { margin-bottom: 20px; }
    label { display: inline-block; width: 150px; vertical-align: top; }
    input, select, textarea { margin-bottom: 10px; }
    .message { padding: 10px; background-color: #e0ffe0; border: 1px solid #00aa00; margin-bottom: 20px; }
  </style>
</head>
<div style="text-align: center; margin: 40px 0;">
    <a href="index.php"
       style="
           display: inline-block;
           padding: 15px 30px;
           background-color: #27ae60;
           color: white;
           text-decoration: none;
           border-radius: 8px;
           box-shadow: 0 3px 6px rgba(0,0,0,0.16);
           font-size: 16px;
           transition: background-color 0.3s ease;
       "
       onmouseover="this.style.backgroundColor='#219150';"
       onmouseout="this.style.backgroundColor='#27ae60';"
    >
        ← Vratite se na početnu
    </a>
</div>

<body>
  <h2>Unos Otpremnice</h2>
  
  <?php if (!empty($successMessage)): ?>
    <div class="message"><?php echo $successMessage; ?></div>
  <?php endif; ?>
  
  <form id="otpremnicaForm" method="post" action="otpremnica.php">
    <!-- Header otpremnice -->
    <div class="form-section">
      <label>Otpremnica broj:</label>
      <input type="text" name="doc_number_display" id="doc_number_display" readonly value="<?php echo $new_doc_number; ?>">
      <br>
      <label>Datum:</label>
      <input type="date" name="doc_date" id="doc_date" required>
      <br>
      <label>Klijent:</label>
      <select name="client_id" id="client_id" required>
        <option value="">-- Odaberi klijenta --</option>
        <?php foreach ($clients as $client): ?>
          <option value="<?php echo $client['sifra']; ?>"><?php echo htmlspecialchars($client['naziv_klijenta']); ?></option>
        <?php endforeach; ?>
      </select>
      <br>
      <label>Na lokaciju:</label>
      <input type="text" name="na_lokaciju" id="na_lokaciju" required>
      <br>
      <!-- Padajuća lista za Napomenu -->
      <label>Napomena:</label>
      <select name="napomena" id="napomena" required>
        <option value="">-- Odaberi napomenu --</option>
        <?php foreach($napomene as $napom): ?>
          <option value="<?php echo htmlspecialchars($napom['tekst_napomena']); ?>">
            <?php echo htmlspecialchars($napom['tekst_napomena']); ?>
          </option>
        <?php endforeach; ?>
      </select>
    </div>
    
    <!-- Stavke otpremnice -->
    <div class="form-section">
      <h3>Stavke otpremnice</h3>
      <div>
        <label>Grupa artikala:</label>
        <select id="grupaSelect">
          <option value="">-- Odaberi grupu --</option>
          <?php foreach($groups as $group): ?>
            <option value="<?php echo $group['id_grupe']; ?>"><?php echo $group['naziv_grupe']; ?></option>
          <?php endforeach; ?>
        </select>
        
        <label>Artikli:</label>
        <select id="artikliSelect">
          <option value="">-- Odaberi artikl --</option>
        </select>
      </div>
      <br>
      <div>
        <label>Šifra artikla:</label>
        <input type="text" id="sifra_artikla" readonly>
        <label>Naziv:</label>
        <input type="text" id="naziv_artikla" readonly>
        <label>JM:</label>
        <input type="text" id="jed_mjere" readonly>
        <label>Količina:</label>
        <input type="number" id="kolicina" min="0" step="0.01">
        <button type="button" onclick="dodajStavku()">Dodaj stavku</button>
      </div>
      <br>
      <table id="stavkeTable">
        <thead>
          <tr>
            <th>Red.br</th>
            <th>Šifra artikla</th>
            <th>Naziv</th>
            <th>JM</th>
            <th>Količina</th>
            <th>Akcija</th>
          </tr>
        </thead>
        <tbody>
          <!-- Stavke se dodaju dinamički -->
        </tbody>
      </table>
    </div>
    
    <!-- Rekapitulacija -->
    <div class="form-section">
      <label>Rekapitulacija - Ukupno:</label>
      <input type="text" id="ukupno" name="ukupno" readonly value="0">
    </div>
    
    <!-- Skriveno polje za proslijeđivanje stavki (JSON) -->
    <input type="hidden" name="stavke" id="stavke">
    
    <button type="submit">Spremi otpremnicu</button>
  </form>
  
  <script>
    var artikli = <?php echo json_encode($artikli); ?>;
    var redBr = 1;
    var stavkeArray = [];
    
    document.getElementById('grupaSelect').addEventListener('change', function() {
      var grupaId = this.value;
      var artikliSelect = document.getElementById('artikliSelect');
      artikliSelect.innerHTML = '<option value="">-- Odaberi artikl --</option>';
      artikli.forEach(function(artikal) {
        if (artikal.id_grupe == grupaId) {
          var option = document.createElement('option');
          option.value = artikal.sifra_artikla;
          option.text = artikal.naziv_artikla;
          option.setAttribute('data-naziv', artikal.naziv_artikla);
          option.setAttribute('data-jm', artikal.jed_mjere);
          artikliSelect.appendChild(option);
        }
      });
    });
    
    document.getElementById('artikliSelect').addEventListener('change', function() {
      var selectedOption = this.options[this.selectedIndex];
      document.getElementById('sifra_artikla').value = selectedOption.value;
      document.getElementById('naziv_artikla').value = selectedOption.getAttribute('data-naziv') || '';
      document.getElementById('jed_mjere').value = selectedOption.getAttribute('data-jm') || '';
    });
    
    function dodajStavku() {
      var sifra = document.getElementById('sifra_artikla').value;
      var naziv = document.getElementById('naziv_artikla').value;
      var jm = document.getElementById('jed_mjere').value;
      var kolicina = document.getElementById('kolicina').value;
      
      if (!sifra || !kolicina) {
        alert("Odaberite artikl i unesite količinu.");
        return;
      }
      
      var tableBody = document.getElementById('stavkeTable').getElementsByTagName('tbody')[0];
      var row = tableBody.insertRow();
      row.insertCell(0).innerHTML = redBr++;
      row.insertCell(1).innerHTML = sifra;
      row.insertCell(2).innerHTML = naziv;
      row.insertCell(3).innerHTML = jm;
      row.insertCell(4).innerHTML = kolicina;
      
      var deleteCell = row.insertCell(5);
      var deleteButton = document.createElement('button');
      deleteButton.innerHTML = "Obriši";
      deleteButton.type = "button";
      deleteButton.onclick = function() {
        var rowIndex = row.rowIndex - 1;
        tableBody.deleteRow(rowIndex);
        stavkeArray.splice(rowIndex, 1);
        updateRedBr();
        updateUkupno();
      };
      deleteCell.appendChild(deleteButton);
      
      stavkeArray.push({
        sifra: sifra,
        naziv: naziv,
        jm: jm,
        kolicina: parseFloat(kolicina)
      });
      
      updateUkupno();
      
      document.getElementById('artikliSelect').value = "";
      document.getElementById('sifra_artikla').value = "";
      document.getElementById('naziv_artikla').value = "";
      document.getElementById('jed_mjere').value = "";
      document.getElementById('kolicina').value = "";
    }
    
    function updateUkupno() {
      var total = 0;
      stavkeArray.forEach(function(item) {
        total += item.kolicina;
      });
      document.getElementById('ukupno').value = total;
    }
    
    function updateRedBr() {
      var tableBody = document.getElementById('stavkeTable').getElementsByTagName('tbody')[0];
      redBr = 1;
      for (var i = 0; i < tableBody.rows.length; i++) {
        tableBody.rows[i].cells[0].innerHTML = redBr++;
      }
    }
    
    document.getElementById('otpremnicaForm').addEventListener('submit', function(e) {
      document.getElementById('stavke').value = JSON.stringify(stavkeArray);
    });
  </script>
</body>
</html>
